這邊要稍微提下來講解一下,前一個實作裡面提到的 pm2 是甚麼作用,簡單來說就是「管理程式運行的程式」,你所起的每支程序只要是透過這樣的程式所啟動的,便可以透過管理程式來進行重啟、監控、日誌...等等的功能。
前兩篇的內容中有提到一個 pm2
的套件,並且我們也有將他置於容器中用於啟動我們的服務,那麼這種程序是用來做甚麼的呢?其實在 node.js
裡除了 pm2
之外還有其他類似 forever
和 StrongLoop
這類的服務都是提供一個更方便的程序管理的入口,來處理整個node.js
的生命週期。
程式在運行的時候,難免會遭遇到各種問題而導致無法進行下去,到也不是因為程式寫得不好,例如有可能因為硬體效能不足導致的OOM、被不明人士攻擊導致服務 crash ,也有可能是希望達到更新版本的時候能達到 0 downtime 升級,這時候這類的程式就能發揮作用。所以:
那麼要如何使用呢?
首先,我們要先全域的安裝套件
npm install --global pm2
接著就可以啟動我們設定好的程序
pm2 start ./web_server.json
pm2 log
web_server.json
[
{
"name": "web_server", // pm2 啟動實的命名
"script": "./app.js", // pm2 要啟動的程序
"exec_mode": "cluster", // pm2 開啟cluster模式
"instances": 4, // pm2 啟動幾個cluster實體
"out_file": "./pm2/web_server-out.log",
"pid_file": "./pm2/pid/web_server.pid",
"args": "3000" // 啟動時要帶入的參數
}
]
成功啟動後 就可以看到以下的畫面
如果要在螢幕上監控log,便可以使用pm2 log
的指令
就可以看到你的程序都在你的監控下囉